home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / gdb / gdb_18s.zoo / expread.c < prev    next >
C/C++ Source or Header  |  1992-03-25  |  58KB  |  2,085 lines

  1.  
  2. /*  A Bison parser, made from expread.y  */
  3.  
  4. #define    INT    258
  5. #define    CHAR    259
  6. #define    FLOAT    260
  7. #define    NAME    261
  8. #define    TYPENAME    262
  9. #define    STRING    263
  10. #define    STRUCT    264
  11. #define    UNION    265
  12. #define    ENUM    266
  13. #define    SIZEOF    267
  14. #define    UNSIGNED    268
  15. #define    COLONCOLON    269
  16. #define    LAST    270
  17. #define    REGNAME    271
  18. #define    VARIABLE    272
  19. #define    ASSIGN_MODIFY    273
  20. #define    ABOVE_COMMA    274
  21. #define    OR    275
  22. #define    AND    276
  23. #define    EQUAL    277
  24. #define    NOTEQUAL    278
  25. #define    LEQ    279
  26. #define    GEQ    280
  27. #define    LSH    281
  28. #define    RSH    282
  29. #define    UNARY    283
  30. #define    INCREMENT    284
  31. #define    DECREMENT    285
  32. #define    ARROW    286
  33.  
  34. #line 30 "expread.y"
  35.  
  36. #include "defs.h"
  37. #include "param.h"
  38. #include "symtab.h"
  39. #include "frame.h"
  40. #include "expression.h"
  41.  
  42. #include <stdio.h>
  43.  
  44. #ifdef atarist
  45. extern int gcc_mshort;
  46. #endif
  47.  
  48. extern CORE_ADDR end_of_text_addr;
  49. static struct expression *expout;
  50. static int expout_size;
  51. static int expout_ptr;
  52.  
  53. static int yylex ();
  54. static yyerror ();
  55. static void write_exp_elt ();
  56. static void write_exp_string ();
  57. static void start_arglist ();
  58. static int end_arglist ();
  59. static void free_funcalls ();
  60. static char *copy_name ();
  61.  
  62. /* If this is nonzero, this block is used as the lexical context
  63.    for symbol names.  */
  64.  
  65. static struct block *expression_context_block;
  66.  
  67. /* Number of arguments seen so far in innermost function call.  */
  68. static int arglist_len;
  69.  
  70. /* Data structure for saving values of arglist_len
  71.    for function calls whose arguments contain other function calls.  */
  72.  
  73. struct funcall
  74.   {
  75.     struct funcall *next;
  76.     int arglist_len;
  77.   };
  78.  
  79. struct funcall *funcall_chain;
  80.  
  81. /* This kind of datum is used to represent the name
  82.    of a symbol token.  */
  83.  
  84. struct stoken
  85.   {
  86.     char *ptr;
  87.     int length;
  88.   };
  89.  
  90. #line 90 "expread.y"
  91. typedef union
  92.   {
  93.     long lval;
  94.     double dval;
  95.     struct symbol *sym;
  96.     struct type *tval;
  97.     struct stoken sval;
  98.     int voidval;
  99.     struct block *bval;
  100.     enum exp_opcode opcode;
  101.     struct internalvar *ivar;
  102.   } YYSTYPE;
  103.  
  104. #ifndef YYLTYPE
  105. typedef
  106.   struct yyltype
  107.     {
  108.       int timestamp;
  109.       int first_line;
  110.       int first_column;
  111.       int last_line;
  112.       int last_column;
  113.       char *text;
  114.    }
  115.   yyltype;
  116.  
  117. #define YYLTYPE yyltype
  118. #endif
  119.  
  120. #include <stdio.h>
  121.  
  122. #ifndef __STDC__
  123. #define const
  124. #endif
  125.  
  126.  
  127.  
  128. #define    YYFINAL        125
  129. #define    YYFLAG        -32768
  130. #define    YYNTBASE    56
  131.  
  132. #define YYTRANSLATE(x) ((unsigned)(x) <= 286 ? yytranslate[x] : 66)
  133.  
  134. static const char yytranslate[] = {     0,
  135.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  136.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  137.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  138.      2,     2,    48,     2,     2,     2,    40,    27,     2,    51,
  139.     52,    38,    36,    19,    37,    46,    39,     2,     2,     2,
  140.      2,     2,     2,     2,     2,     2,     2,    55,     2,    30,
  141.     21,    31,    22,    41,     2,     2,     2,     2,     2,     2,
  142.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  143.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  144.     47,     2,    50,    26,     2,     2,     2,     2,     2,     2,
  145.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  146.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  147.      2,     2,    53,    25,    54,    49,     2,     2,     2,     2,
  148.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  149.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  150.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  151.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  152.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  153.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  154.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  155.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  156.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  157.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  158.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  159.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  160.      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
  161.      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
  162.     16,    17,    18,    20,    23,    24,    28,    29,    32,    33,
  163.     34,    35,    42,    43,    44,    45
  164. };
  165.  
  166. static const short yyprhs[] = {     0,
  167.      0,     2,     4,     8,    11,    14,    17,    20,    23,    26,
  168.     29,    32,    35,    38,    42,    46,    51,    52,    58,    59,
  169.     61,    65,    70,    75,    79,    83,    87,    91,    95,    99,
  170.    103,   107,   111,   115,   119,   123,   127,   131,   135,   139,
  171.    143,   147,   151,   155,   161,   165,   169,   171,   173,   175,
  172.    177,   179,   181,   183,   188,   190,   192,   196,   200,   202,
  173.    204,   207,   209,   212,   215,   218,   221,   223
  174. };
  175.  
  176. static const short yyrhs[] = {    57,
  177.      0,    58,     0,    57,    19,    58,     0,    38,    58,     0,
  178.     27,    58,     0,    37,    58,     0,    48,    58,     0,    49,
  179.     58,     0,    43,    58,     0,    44,    58,     0,    58,    43,
  180.      0,    58,    44,     0,    12,    58,     0,    58,    45,    65,
  181.      0,    58,    46,    65,     0,    58,    47,    57,    50,     0,
  182.      0,    58,    51,    59,    60,    52,     0,     0,    58,     0,
  183.     60,    19,    58,     0,    53,    63,    54,    58,     0,    51,
  184.     63,    52,    58,     0,    51,    57,    52,     0,    58,    41,
  185.     58,     0,    58,    38,    58,     0,    58,    39,    58,     0,
  186.     58,    40,    58,     0,    58,    36,    58,     0,    58,    37,
  187.     58,     0,    58,    34,    58,     0,    58,    35,    58,     0,
  188.     58,    28,    58,     0,    58,    29,    58,     0,    58,    32,
  189.     58,     0,    58,    33,    58,     0,    58,    30,    58,     0,
  190.     58,    31,    58,     0,    58,    27,    58,     0,    58,    26,
  191.     58,     0,    58,    25,    58,     0,    58,    24,    58,     0,
  192.     58,    23,    58,     0,    58,    22,    58,    55,    58,     0,
  193.     58,    21,    58,     0,    58,    18,    58,     0,     3,     0,
  194.      4,     0,     5,     0,    62,     0,    15,     0,    16,     0,
  195.     17,     0,    12,    51,    63,    52,     0,     8,     0,    65,
  196.      0,    61,    14,    65,     0,    61,    14,    65,     0,     6,
  197.      0,    64,     0,    63,    38,     0,     7,     0,     9,    65,
  198.      0,    10,    65,     0,    11,    65,     0,    13,    65,     0,
  199.      6,     0,     7,     0
  200. };
  201.  
  202. #if YYDEBUG != 0
  203. static const short yyrline[] = { 0,
  204.    151,   155,   156,   161,   164,   167,   171,   175,   179,   183,
  205.    187,   191,   195,   199,   205,   211,   215,   219,   225,   228,
  206.    232,   236,   242,   248,   254,   258,   262,   266,   270,   274,
  207.    278,   282,   286,   290,   294,   298,   302,   306,   310,   314,
  208.    318,   322,   326,   330,   334,   338,   344,   356,   363,   370,
  209.    373,   379,   385,   391,   398,   404,   423,   432,   443,   487,
  210.    488,   493,   496,   499,   502,   505,   509,   510
  211. };
  212.  
  213. static const char * const yytname[] = {   "$",
  214. "error","$illegal.","INT","CHAR","FLOAT","NAME","TYPENAME","STRING","STRUCT","UNION",
  215. "ENUM","SIZEOF","UNSIGNED","COLONCOLON","LAST","REGNAME","VARIABLE","ASSIGN_MODIFY","','","ABOVE_COMMA",
  216. "'='","'?'","OR","AND","'|'","'^'","'&'","EQUAL","NOTEQUAL","'<'",
  217. "'>'","LEQ","GEQ","LSH","RSH","'+'","'-'","'*'","'/'","'%'",
  218. "'@'","UNARY","INCREMENT","DECREMENT","ARROW","'.'","'['","'!'","'~'","']'",
  219. "'('","')'","'{'","'}'","':'","start","exp1","exp","@1","arglist",
  220. "block","variable","type","typebase","name",""
  221. };
  222. #endif
  223.  
  224. static const short yyr1[] = {     0,
  225.     56,    57,    57,    58,    58,    58,    58,    58,    58,    58,
  226.     58,    58,    58,    58,    58,    58,    59,    58,    60,    60,
  227.     60,    58,    58,    58,    58,    58,    58,    58,    58,    58,
  228.     58,    58,    58,    58,    58,    58,    58,    58,    58,    58,
  229.     58,    58,    58,    58,    58,    58,    58,    58,    58,    58,
  230.     58,    58,    58,    58,    58,    61,    61,    62,    62,    63,
  231.